package cn.com.surker.oa.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 付款记录
 * </p>
 *
 * @author admin
 * @since 2022-10-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OaPayRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 标识
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 流程编号
     */
    private String processNo;


    /**
     * 会计ID
     */
    private Long accountingUid;

    /**
     * 会计
     */
    private String accounting;

    /**
     * 订单号
     */
    private String orderId;

    /**
     * 申请人ID
     */
    private Long uid;

    /**
     * 申请人
     */
    private String name;

    /**
     * 工厂id
     */
    private Long orgId;

    /**
     * 公司名称
     */
    private String orgName;

    /**
     * 部门ID
     */
    private Long detId;

    /**
     * 部门名称
     */
    private String detName;

    /**
     * 岗位ID
     */
    private Long positionId;

    /**
     * 申请人岗位
     */
    private String position;

    /**
     * 费用类型(0:报销付款,1借支付款,2:材料付款,,3:材料运输付款,,4:泵送付款5:生产运输付款,6:其他)
     */
    private Integer type;

    /**
     * 付款内容
     */
    private String content;

    /**
     * 未支付金额
     */
    private Double unPayMoney;

    /**
     * 已支付金额
     */
    private Double payMoney;

    /**
     * 总金额
     */
    private Double amount;

    /**
     * 支付方式(0:现金1:现金支票2:转账支票3:转账(电汇)4:银行承兑5:商业承兑6:电子承兑7:抵款8:冲备用金)
     */
    private Integer payType;

    /**
     * 状态(0:启用1:禁用)
     */
    private Integer status;

    /**
     * 业务流程表名
     */
    private String bizType;

    /**
     * 是否有票据(0:没有票据，1：有票据)
     */
    private Integer isTicket;

    /**
     * 业务ID
     */
    private Long bizId;

    /**
     * 排序号
     */
    private Integer sort;

    /**
     * 备注
     */
    private String remark;

    /**
     * 处理状态(0：待审核，1：待支付，2：已支付,3:已作废)
     */
    private Integer handleStatus;

    /**
     * 收款人
     */
    private String realName;

    /**
     * 开户行
     */
    private String bankName;

    /**
     * 开户账号
     */
    private String bankNo;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;
    public OaPayRecord(){}

    public OaPayRecord(String processNo, Long accountingUid, String accounting, String orderId, Long uid, String name,
                       Long orgId, String orgName, Long detId, String detName, Long positionId, String position,
                       Integer type, String content, Double unPayMoney, Double payMoney, Double amount, Integer payType,
                       Integer status, String bizType, Long bizId, Integer sort, String remark, Date createTime,
                       Integer handleStatus, String realName, String bankName, String bankNo, Date updateTime, Integer isTicket) {
        this.processNo = processNo;
        this.accountingUid = accountingUid;
        this.accounting = accounting;
        this.orderId = orderId;
        this.uid = uid;
        this.name = name;
        this.orgId = orgId;
        this.orgName = orgName;
        this.detId = detId;
        this.detName = detName;
        this.positionId = positionId;
        this.position = position;
        this.type = type;
        this.content = content;
        this.unPayMoney = unPayMoney;
        this.payMoney = payMoney;
        this.amount = amount;
        this.payType = payType;
        this.status = status;
        this.bizType = bizType;
        this.bizId = bizId;
        this.sort = sort;
        this.remark = remark;
        this.createTime = createTime;
        this.handleStatus = handleStatus;
        this.realName = realName;
        this.bankName = bankName;
        this.bankNo = bankNo;
        this.updateTime = updateTime;
        this.isTicket = isTicket;
    }

    @Override
    public String toString() {
        return "OaPayRecord{" +
                "id=" + id +
                ", processNo='" + processNo + '\'' +
                ", accountingUid=" + accountingUid +
                ", accounting='" + accounting + '\'' +
                ", orderId='" + orderId + '\'' +
                ", uid=" + uid +
                ", name='" + name + '\'' +
                ", orgId=" + orgId +
                ", orgName='" + orgName + '\'' +
                ", detId=" + detId +
                ", detName='" + detName + '\'' +
                ", positionId=" + positionId +
                ", position='" + position + '\'' +
                ", type=" + type +
                ", content='" + content + '\'' +
                ", unPayMoney=" + unPayMoney +
                ", payMoney=" + payMoney +
                ", amount=" + amount +
                ", payType=" + payType +
                ", status=" + status +
                ", bizType='" + bizType + '\'' +
                ", isTicket=" + isTicket +
                ", bizId=" + bizId +
                ", sort=" + sort +
                ", remark='" + remark + '\'' +
                ", handleStatus=" + handleStatus +
                ", realName='" + realName + '\'' +
                ", bankName='" + bankName + '\'' +
                ", bankNo='" + bankNo + '\'' +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }
}
